Various forms of network data storage systems are known today. These forms include network attached storage (NAS), storage area networks (SANs), and others. Network storage systems are commonly used for a variety of purposes, such as providing multiple users with access to shared data, backing up critical data (e.g., by data mirroring), etc.
A network storage system typically includes at least one storage server, which is a processing system configured to store and retrieve data on behalf of one or more client processing systems (“clients”). A typical storage server manages one or more logical data container storing data, such as a volume. A volume is a logical data set which is an abstraction of physical storage (e.g., disks) or parts thereof into a single logical storage object, and which is managed as a single administrative unit, such as by a file system layer. A volume may be defined from a larger group of available storage, such as an aggregate. A volume may be logically broken down into logical data sets (storage objects), which may contain one or more Redundant Array of Independent/Inexpensive Disks (RAID) groups. An aggregate is a logical aggregation of physical storage, such as a logical container for a pool of storage, combining one or more physical mass storage devices (e.g., disks) or parts thereof into a single logical storage object, which contains or provides storage for one or more other logical data sets at a higher level of abstraction (e.g., volumes). A file system layer, which manages the underlying file system, is an application-level programmatic entity, which imposes a structure (e.g., hierarchical structure) on files, directors and/or other data contains stored and/or managed by a storage server, and which services read/write requests from clients of the storage server.
Storage administrators need a method to define and limit the amount of storage that is used by individuals who have access to a shared data storage resource. The administrator may wish to limit storage to particular individuals for administrative reasons, financial reasons, or the like. The administrators may also wish to control the rate of growth of data stored in the storage system. In order to limit the amount of storage used by an individual, some file systems, managed by the file system layer, have a quota of storage resources that can be used by a user to limit the storage usage by a user on a volume. A quota is a limit on the amount of storage resources that can be allocated to the user. There are different types of quotas, for example, usage quota, block quota, file quota, or inode quota. Usage and block quota limit the amount of disk area that can be used. File and inode quotas limit the number of files and directories that can be created. Specific quotas can be applied to individual users, or alternatively, a default user quota can be established that applies to all users utilizing space within the volume. An inode stores basic information about a file, directory, or file system object. Quotas may also be applied to a group of users in a similar manner as with individual users. That is, a system or storage administrator defines a usage or file quota specific to a certain user or group of users. Alternatively, quotas may be implemented for other entities than an individual user or a group of users, such as Human Resources (HR), Engineering, or the like. In addition, administrators typically define a warning level, i.e., soft quota, at which users are informed they are nearing their limit, which is less than the effective limit, i.e., a hard quota. Also, there may be a grace interval, which allows users to temporarily violate their quotas by certain amounts if necessary. In defining and implementing quotas on storage server, an administrator can prevent one user from consuming an entire file system's resources, or create a system of tiered access, in which users can have different levels of restriction. The quotas may be used, for example, to provide different levels of service based upon the needs of individual clients.
One problem with implementing quotas in some conventional systems is that quota-sensitive data requests received at a storage server of the system may include dissimilar types of identification values that identify the type of platform from which the data request originated. A platform describes a framework, either in hardware of software, which allows software to run. Typical platforms include a computer's architecture, operating system, or programming languages and their runtime libraries. For example, the platforms may be UNIX®, WINDOWS°, or the like. Each data request received from a specific platform includes a platform-specific identification value. When the storage server receives multiple requests from a user from various platforms, the conventional systems become more complex, since the conventional system have to track various quota-sensitive data requests, including dissimilar types of identification values, from various platforms for each of the users. For example, the user A performs a create-file-access request by way of the storage server from a first client implementing the UNIX platform, and later performs a write-access request from a second client implementing the WINDOWS platform. The first access request includes an identification value to identify the user on the first platform, while the second access includes a different identification value to identify the same user, but from the second platform. Also, platform-specific identification values may be derived from within the storage server, for example, Quota Tree Identification (TID) values. A TID value is the identification of a quota tree, which is a top-level directory used to provide a simple form of directory quota. Examples of data requests received from various specific platforms includes data requests from a UNIX platform including a UNIX user Identification (UID) value or a UNIX Group user Identification (GID), from a WINDOWS platform including a Common Internet File System (CIFS) Windows Security Identification (SID), and from other platforms, such as a platform using the Data ONTAP® storage operating system software, available from Network Appliance of Sunnyvale, Calif., including a TID value. Since the storage server receives various data requests with different types of identification values for a single user, it becomes difficult for an administrator to maintain the quota for the user.